Skip to content

Conversation

RalfJung
Copy link
Member

For MiniRust we need to convert MIR constant values into MiniRust constant values. However, it's not currently possible to get nice high-level access to the inerts of a ConstValue: we can access the raw contents (the allocation / ScalarInt), but if it is e.g. of enum type and we want to determine which variant is encoded, we are stuck. There's only try_destructure_mir_constant_for_user_output which is meant for diagnostics, so it doesn't fit.

The interpreter has all the APIs to traverse such a value, so we just need a way to get such a ConstValue into an interpreter instance. This adds the public functions necessary to make that happen.

@rustbot
Copy link
Collaborator

rustbot commented Feb 21, 2024

r? @pnkfelix

rustbot has assigned @pnkfelix.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 21, 2024
@RalfJung
Copy link
Member Author

r? @oli-obk

@oli-obk
Copy link
Contributor

oli-obk commented Feb 21, 2024

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented Feb 21, 2024

📌 Commit 9eabdc2 has been approved by oli-obk

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 21, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 21, 2024
Rollup of 8 pull requests

Successful merges:

 - rust-lang#121044 (Support async trait bounds in macros)
 - rust-lang#121175 (match lowering: test one or pattern at a time)
 - rust-lang#121340 (bootstrap: apply most of clippy's suggestions)
 - rust-lang#121347 (compiletest: support auxiliaries with auxiliaries)
 - rust-lang#121359 (miscellaneous type system improvements)
 - rust-lang#121366 (Remove `diagnostic_builder.rs`)
 - rust-lang#121379 (Remove an `unchecked_error_guaranteed` call.)
 - rust-lang#121396 (make it possible for outside crates to inspect a mir::ConstValue with the interpreter)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit bd7ba27 into rust-lang:master Feb 21, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 21, 2024
Rollup merge of rust-lang#121396 - RalfJung:mir-const-value-inspect, r=oli-obk

make it possible for outside crates to inspect a mir::ConstValue with the interpreter

For MiniRust we need to convert MIR constant values into MiniRust constant values. However, it's not currently possible to get nice high-level access to the inerts of a `ConstValue`: we can access the raw contents (the allocation / `ScalarInt`), but if it is e.g. of enum type and we want to determine which variant is encoded, we are stuck. There's only `try_destructure_mir_constant_for_user_output` which is meant for diagnostics, so it doesn't fit.

The interpreter has all the APIs to traverse such a value, so we just need a way to get such a ConstValue into an interpreter instance. This adds the public functions necessary to make that happen.
@rustbot rustbot added this to the 1.78.0 milestone Feb 21, 2024
@RalfJung RalfJung deleted the mir-const-value-inspect branch February 24, 2024 11:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants